package com.tywj.panda.customer.common.entity

import  android.os.Parcel
import android.os.Parcelable
import com.google.gson.annotations.SerializedName

/**
 * <pre>
 *     author : June Yang
 *     time   : 2020/5/26
 *     desc   : 线路详情实体类
 *     version: 2.0.0
 * </pre>
 */
class HomeLineDetailsEntity {

    /**
     * 线路编号
     */
    var id = ""

    /**
     * 站点名称
     */
    var name = ""

    /**
     * 始发站
     */
    var start = Station()

    /**
     * 终点站
     */
    var end = Station()

    /**
     * 线路简称
     */
    @SerializedName("fied_name")
    var fiedName = ""

    //status (integer): 状态 -1.草稿 0：待审核（提交资料）；1：审核失败 2：审核通过（正常） 3：冻结 4：解冻 ,5正常班
    var status = 0

    /**
     * 里程(m)
     */
    var mileage = 0

    /**
     * 途径点
     */
    var ways = ArrayList<Station>()

    /**
     * 备注
     */
    var note = ""

    /**
     * 途经点
     *  高德移动端SDK支持的格式为[纬度,经度]
     * 注意！服务器返回的是 [经度，纬度]
     * 二维数组：示例：
     * "route": [103.97,30.78],[103.78,30.33],[109.34,30.55]
     *
     */
    var route = ArrayList<ArrayList<Double>>()

    /**
     * 类型  1:通勤车，2:景区直通车
     */
    var type = 1


    //克隆对象用于重新计算时刻表
    class Station() : Parcelable {


        /**
         * 经纬度坐标，用来描述地图上的一个点位置, 目前高德地图使用的是 GCJ-02 坐标，如果你采集的是 WGS84 坐标
         * 经度值,纬度值
         */
        var loc = ArrayList<Double>()

        var name = ""

        @SerializedName("is_sale")
        var isSale = false

        //分钟
        var time = 0

        /*****************客户端新增***********/
        //计算之后的时间
        var timeAdd = ""

        var isSelected = false

        //是否展开或关闭
        var isExpanded = false

        //是否设置为起点或终点
        var isTagStartStation = false

        var isTagEndStation = false


        var isEnd = false

         val stationId = ""
         val img =
            "https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1590565051&di=153dede5862bc698725b5d9911348034&src=http://p2.so.qhimgs1.com/t01dfcbc38578dac4c2.jpg"
         val info = ""

        constructor(parcel: Parcel) : this() {
            loc = parcel.readArrayList(Double::class.java.classLoader) as ArrayList<Double>
            name = parcel.readString() ?: ""
            isSale = parcel.readByte() != 0.toByte()
            time =parcel.readInt()
            timeAdd = parcel.readString()?:""

            isSelected = parcel.readByte() != 0.toByte()
            isExpanded = parcel.readByte() != 0.toByte()
            isTagStartStation = parcel.readByte() != 0.toByte()
            isTagEndStation = parcel.readByte() != 0.toByte()

            isEnd = parcel.readByte() != 0.toByte()
        }


        override fun writeToParcel(parcel: Parcel, flags: Int) {
            parcel.writeList(loc)
            parcel.writeString(name)
            parcel.writeByte(if (isSale) 1 else 0)
            parcel.writeInt(time)
            parcel.writeString(timeAdd)

            parcel.writeByte(if (isSelected) 1 else 0)
            parcel.writeByte(if (isExpanded) 1 else 0)
            parcel.writeByte(if (isTagStartStation) 1 else 0)
            parcel.writeByte(if (isTagEndStation) 1 else 0)
            parcel.writeByte(if (isEnd) 1 else 0)
        }

        override fun describeContents(): Int {
            return 0
        }

        companion object CREATOR : Parcelable.Creator<Station> {
            override fun createFromParcel(parcel: Parcel): Station {
                return Station(parcel)
            }

            override fun newArray(size: Int): Array<Station?> {
                return arrayOfNulls(size)
            }
        }
    }
}
